package lq786;

import java.util.Scanner;
/*
lq786，AC
输入数据：
3 3 100
10 20 15
15 17 13
15 25 16 

*/
public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
        //天数
		int T=sc.nextInt();
        //每天的物品种类
		int N=sc.nextInt();
		//金币数量（对应0/1背包的背包容量）
        int M=sc.nextInt();
        //每天每种物品的价格,下标都从1开始
        int[][] p = new int[T+1][N+1];
        for(int i=1;i<=T;i++) {
            for(int j=1;j<=N;j++) {
                p[i][j]=sc.nextInt();
            }
        }
        
        
        //按天数遍历
        //注意最后一天不要买入
        for(int k=1;k<T;k++) {
            //dp数组
        	int c[][]=new int[N+1][M+1];
            //完全背包代码
            for(int i=1;i<=N;i++) {//物品数量外层循环
            	for(int j=1;j<=M;j++) {//背包容量内层循环
            		if(j<p[k][i]) {
            			//无法放入情况
            			//和i-1种的最大价值一样
            			c[i][j] = c[i-1][j];
            		}else {
            			//可以放入情况
            			c[i][j] = Math.max(c[i-1][j], c[i][j-p[k][i]]+p[k+1][i]-p[k][i]);
            		}	
            	}
            }
            //下一天开始前M要加上当前天的最大盈利数
            M+=c[N][M];
        }
        
        System.out.println(M);
	}

}
